"""
简化的TTS音频访问解决方案
直接从缓存目录复制最新的音频文件
"""
import os
import shutil
from datetime import datetime

def get_newest_audio_file(cache_dir="data/cache/audio", extension=".wav"):
    """获取缓存目录中最新的音频文件"""
    try:
        if not os.path.exists(cache_dir):
            print(f"错误: 缓存目录 {cache_dir} 不存在")
            return None
        
        files = os.listdir(cache_dir)
        audio_files = [f for f in files if f.endswith(extension)]
        
        if not audio_files:
            print(f"错误: 在 {cache_dir} 中没有找到 {extension} 文件")
            return None
        
        # 按修改时间排序，获取最新的文件
        newest_file = max(audio_files, key=lambda f: os.path.getmtime(os.path.join(cache_dir, f)))
        return os.path.join(cache_dir, newest_file)
    
    except Exception as e:
        print(f"获取最新音频文件失败: {e}")
        return None

def copy_to_output(source_file, output_dir="output", new_name=None):
    """将音频文件复制到输出目录"""
    try:
        # 确保输出目录存在
        os.makedirs(output_dir, exist_ok=True)
        
        # 如果没有指定新名称，使用原始文件名
        if not new_name:
            new_name = os.path.basename(source_file)
        
        # 构建目标路径
        target_path = os.path.join(output_dir, new_name)
        
        # 复制文件
        shutil.copy2(source_file, target_path)
        print(f"成功: 文件已复制到 {target_path}")
        return target_path
    
    except Exception as e:
        print(f"复制文件失败: {e}")
        return None

def main():
    # 生成带时间戳的输出文件名
    timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
    output_filename = f"tts_example_{timestamp}.wav"
    
    print("正在查找最新的音频文件...")
    newest_audio = get_newest_audio_file()
    
    if newest_audio:
        print(f"找到最新音频文件: {newest_audio}")
        output_path = copy_to_output(newest_audio, new_name=output_filename)
        
        if output_path:
            print("\n成功访问音频文件!")
            print(f"音频文件保存在: {output_path}")
            
            # 提供播放指南
            print("\n如何播放:")
            print("1. 在文件资源管理器中找到上述文件并双击")
            print("2. 或者使用命令行播放: start", output_path)
    else:
        print("无法找到可用的音频文件")

if __name__ == "__main__":
    main()